"use client"; import { ServiceTypes } from "@/api/customservice"; import { getPaysApi, lredPacketApi, PayDataType, redPacketApi } from "@/api/promo"; import UserRecharge, { ModalRefProps, Timeout } from "@/components/ModalPopup/RechargeModal"; import RedPacketModal, { RedPacketModalProps } from "@/components/ModalPopup/RedPacketModal"; import SlotsModal, { SlotModalRefProps } from "@/components/ModalPopup/SlotsModal"; import WheelModal, { WheelModalProps } from "@/components/ModalPopup/WheelModal"; import { getWheelApi } from "@/api/cashWheel"; import { getShareApi } from "@/api/config"; import { getGiveInfoApi } from "@/api/slots"; import { Link } from "@/i18n/routing"; import { useGlobalNoticeStore } from "@/stores/useGlobalNoticeStore"; import useWheelStore from "@/stores/useWheelStore"; import { getToken } from "@/utils/Cookies"; import { useRequest } from "ahooks"; import { Badge } from "antd-mobile"; import { useTranslations } from "next-intl"; import Image from "next/image"; import { useSearchParams } from "next/navigation"; import { FC, useEffect, useRef } from "react"; interface Props { services: ServiceTypes[]; } /** * 免费送活动 */ const SlotSection = () => { const slotsRef = useRef(null); const getSlots = async () => { const token = getToken(); if (token) { const result = await getGiveInfoApi(); return result.data; } else { return Promise.resolve({}); } }; const { data: slots, run: slotRun } = useRequest(getSlots, { pollingInterval: 2000, pollingErrorRetryCount: 1, pollingWhenHidden: false, }); const slotHandler = () => { slotsRef.current?.onOpen(slots); }; return ( <> {slots?.id ? ( ) : null} {/*随机送*/} ); }; /** * 轮盘 */ const WheelSection = () => { const wheelModalRef = useRef(null); const { wheelStatus, wheelCurrent, setWheel } = useWheelStore((state) => ({ wheelStatus: state.status, wheelCurrent: state.currentWheel, setWheel: state.setWheel, })); useEffect(() => { setWheel().then((data) => { if (data && useWheelStore.getState().status === 1) { wheelModalRef.current?.onOpen(data); } }); }, []); return ( <> {wheelStatus === 2 ? ( {"wheel"} ) : null} {/* 轮盘弹窗 */} ); }; /** * 首充 */ const PaySection = () => { const token = getToken(); const userRechargeRef = useRef(null); // 首充活动 const getPayInfo = async (): Promise => { if (token) { const result = await getPaysApi(); return result.data; } else { return Promise.resolve({ first_pay: [], pay: [], }); } }; const { data: paysInfo, run: payRun } = useRequest(getPayInfo, { pollingErrorRetryCount: 1, pollingWhenHidden: false, }); return ( <> {paysInfo && paysInfo.first_pay && paysInfo.first_pay.map((item, index) => { return (
{ userRechargeRef.current?.onOpen && userRechargeRef.current?.onOpen(paysInfo?.first_pay, index); }} /> {item.end_time > 0 ? ( ) : null}
); })} {/*首充弹窗*/} ); }; /** * 红包雨 */ const RedPacketSection = () => { const token = getToken(); const redPacketModalRef = useRef(null); const getRedPacketInfo = async () => { try { let redPacketInfo: any; let actList: any = []; if (token) { redPacketInfo = await lredPacketApi(); actList = redPacketInfo.data?.red_packets || []; } else { redPacketInfo = await redPacketApi(); actList = redPacketInfo.data || []; } // 已经开始 return actList.filter((aItem: any) => { return aItem.is_start; }); } catch (error) {} }; // 红包雨轮询 const { data: packets, run } = useRequest(getRedPacketInfo, { pollingInterval: 5000, pollingErrorRetryCount: 1, pollingWhenHidden: false, }); return ( <> {packets?.map((item, index) => { const icons = JSON.parse(item.icon); const icon = icons[icons.length - 1]; return (
{ redPacketModalRef.current?.onOpen(packets, index); }} />
); })} {/*红包雨弹窗*/} ); }; const MessageSection = () => { const { unread, userUnred } = useGlobalNoticeStore((state) => ({ unread: state.unread, userUnred: state.userUnred, })); return ( <> {unread || userUnred ? ( ) : null} ); }; /** * 客服 */ const CustomerSection: FC> = (props) => { const { services } = props; const defaultService = services?.filter((item) => item.is_suspend === 1); return ( <> {defaultService?.map((item, index) => ( {""} ))} ); }; const ServiceWidget: FC = (props) => { const { services } = props; const newServices = services?.filter((item) => item.status === 1) || []; const getWheel = () => { if (!getToken()) return Promise.resolve(undefined); return getWheelApi().then((res) => { return res.data; }); }; const serach = useSearchParams(); useEffect(() => { // 数据存储,侧边栏使用 // setSocials(socials); // 分享地址 if (serach.get("ch")) { getShareApi({ channel_url: window.location.href }); } }, []); const t = useTranslations("HomePage"); return ( <>
{/*轮盘 */} {/*首充*/} {/* 红包雨icon */} {/*未读消息*/} {/*客服*/}
= 5 ? 5 : (newServices?.length ?? 1)},1fr)`, }} > {newServices.map((service, index) => { return ( ); })}
{t("Service")}
{/*share*/}
{t("Share")}
{"BCWIN777"} ); }; export default ServiceWidget;